As rapid advancements in technology have brought about dramatic changes in the distribution of information in recent years, the managers of commercial data repositories have seen rapid increases in the amounts and types of information that they are asked to store. The growing popularity of multimedia information, for example—including items such as photographic images, video and audio clips, and animation clips—has forced the manufacturers and owners of data repositories to overhaul the ways in which they manage the information they keep. Relational database systems, which have traditionally been used to manage only information that is easily divided into a row-and-column format, now must handle more complex data types that do not conform readily to relational data structures.
Manufacturers of relational database systems have for years attempted to accommodate these more complex data types by treating them as “objects,” or large groups of data that each can be stored and treated as a single entity. Quite often, a database system stores separately in its relational structure the data that makes up an object—such as a binary bitmap that forms a photographic image—and a set of descriptive data, or “metadata,” that describes the object.
In general, however, the database system does not allow for easy manipulation of object data on the client side. For example, the vast majority of database systems do not support object-oriented design of user-defined data types (UDTs) on client systems in traditional database-query languages, such as the Structured Query Language (SQL), instead requiring more time-consuming coding through programming languages such as C++. Even the most sophisticated of relational database systems present object data, including UDTs, to the client in ways that severely limit the manner and environment in which the client can use that data. These limitations include an inability to move object data among non-compatible hardware platforms and a lack of support for multiple versions of a UDT. Database systems also do not allow the execution of methods on UDTs on the client side. Client systems that modify the data of a UDT cannot return the modified data to the database system.